//选择排序
const arr = [5, 3, 2, 6, 8, 4, 0, 1, 9, 7];
//找最小值
function selectionSort(arr) {
    for (let i = 0; i < arr.length - 1; i++) {//外层循环表示，要找九次最小值
        const minIndex = i //每进行一次循环后，最前面的位置要缩进
        const currentMin = getmin(minIndex, arr.length, arr)//获得最小值的索引
        if (currentMin != minIndex) {
            [arr[minIndex], arr[currentMin]] = [arr[currentMin], arr[minIndex]]//交换位置
        }
    }
    return arr;
}
function getmin(i, j, arr) {//传的i表示区域第一位，j为区域最后一位，arr表示数组
    let o = 0//不能用const，因为定义之后就不能重新被赋值
    let min = Infinity//设置一个正无穷的数
    // 注意，这种定义变量最好再循环外，不然每次玄幻都会重新定义一遍
    for (let k = i; k < j; k++) {
        if (arr[k] < min) {
            min = arr[k]
            o = k//表示最小值的索引
        }
    }
    return o;//返回最小值的索引
}
console.log(selectionSort(arr));
